One or more configuration sources (e.g., remote servers, remote agents) external to a computing device can configure features on the computing device. The features configured by the configuration source(s) can include policies, configuration profiles, resources (e.g., applications), and the like. For instance, features enforced on the computing device can be controlled to secure and manage the computing device. Configuration of the features by the configuration source(s) can be interdependent; yet, the features can be independently managed. By way of illustration, to cause a computing device to be in a desired configuration state, a first feature may be configured only after a second feature has been configured on the computing device, where the first and second features can be independently managed (e.g., a first configuration source can configure the first feature and a second configuration source can configure the second feature, the first feature and the second feature can be configured by unrelated subsystems of a configuration source).
Configuration source(s) conventionally can manage the dependencies between features. For instance, configuration source(s) can sequence communications with a computing device in such a way that the computing device is in a desired configuration state. According to an illustration where a configuration source negotiates dependencies between features to configure a data protection feature on a computing device, the configuration source can initially install a certificate on the computing device. The configuration source can wait for the installation of the certificate to complete, and once the certificate is installed, the configuration source can install a virtual private network (VPN) profile on the computing device. Again, the configuration source can wait for the VPN profile installation to complete, and then the data protection feature can be configured by the configuration source. However, connectivity between configuration source(s) and a computing device may be unreliable, so it may be difficult for the configuration source(s) to synchronize with the computing device and manage configuration state transitions. Moreover, it may be difficult to coordinate configuration in such a way to guarantee correct configuration state, since enforcement and/or implementation of configuration can be dictated by components on the computing device. For instance, while a computing device may successfully receive a configuration from a configuration source, the computing device may not enforce the configuration in a desired manner, which adds to complexity of conventional approaches. Additionally, coordination of configuration can be made more difficult since dependencies between features may vary between device types, change when conditions are altered, or generally be unknown.